﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace AdatbazisProjekt
{
    struct Vasarlas
    {
        public string nev;
        public string termek;
        public string lakhely;
        public string telefonszam;
        public string szemelyszam;
        public string ar;
        public string datum;
        public string vasarlasID;
    }


    class EddigiVasarlasokData:DalGen
    {
		// vasarlasokkal es a vasarlokkal kapcsolatos adatok lekerdezeset modositasat vegzo osztaly
        public EddigiVasarlasokData(ref bool Err)
        {
            if (!base.IsConnectCreated())
            {
                Err = !base.MakeConnection();
            }
        }

        public List<Vasarlas> VasarlasAdatLeker(string nev, string termek, string lakhely, string telefonszam, string szemelyszam, string ar, string datum, ref bool error)
        {
			// vasarlok adatainak lekerdezeset vegzi a megadott parameterek szerint szur
            try
            {
                error = false;
                List<Vasarlas> eredmeny = new List<Vasarlas>();
                string err = "";
                string szuro = " Termekek.TermekNev LIKE '" + termek + "%' AND Vasarlo.Nev LIKE '" + nev + "%' AND Vasarlo.Lakhely LIKE '" + lakhely + "%' AND Vasarlo.SzemSzam LIKE '" + szemelyszam + "%' AND Vasarlo.TelSzam LIKE '" + telefonszam + "%' AND Vasarlas.Ar LIKE '"+ar+"%' AND Vasarlas.Idopont LIKE '"+datum+"%'" ;
                SqlDataReader reader = mExecuteReader("SELECT Vasarlo.Nev, Termekek.TermekNev, Vasarlo.Lakhely, Vasarlo.TelSzam, Vasarlo.SzemSzam, Vasarlas.Ar, Vasarlas.Idopont, Vasarlas.VasarlasID FROM Vasarlas, Vasarlo, Termekek WHERE Vasarlas.SzemSzam = Vasarlo.SzemSzam AND Termekek.TermekID = Vasarlas.TermekID AND" + szuro, ref err, null);
                Vasarlas elem;
                while (reader.Read())
                {
                    elem.nev = reader["Nev"].ToString();
                    elem.termek = reader["TermekNev"].ToString();
                    elem.lakhely = reader["Lakhely"].ToString();
                    elem.telefonszam = reader["TelSzam"].ToString();
                    elem.szemelyszam = reader["SzemSzam"].ToString();
                    elem.ar = reader["Ar"].ToString();
                    elem.datum = reader["Idopont"].ToString();
                    elem.vasarlasID = reader["VasarlasID"].ToString();

                    eredmeny.Add(elem);
                }
                this.CloseConnection();
                return eredmeny;
            }
            catch (Exception)
            {
                this.CloseConnection();
                error = true;
                return null;
            }
        }

        public void VasarloTorles(string szemSzam, ref bool error)
        {
			
            OpenConnection();
            SqlTransaction tran = mySqlConn.BeginTransaction(IsolationLevel.ReadUncommitted);
            try
            {
                error = false;
                this.MyExecuteNonQuery("DELETE FROM Vasarlo WHERE SzemSzam = '" + szemSzam + "'", ref error, tran);
                tran.Commit();
                tran.Dispose();

            }
            
            catch (Exception)
            {
                tran.Rollback();
                tran.Dispose();
                error = true;
            }
            finally
            {
                CloseConnection();
            }
        }

        public void VasarlasTorles(string vasarlasID, ref bool error)
        {
			// Egy vasarlas torleset vegzi az adatbazisban
            OpenConnection();
            SqlTransaction tran = mySqlConn.BeginTransaction(IsolationLevel.ReadUncommitted);
            try
            {
                error = false;
                this.MyExecuteNonQuery("DELETE FROM Vasarlas WHERE VasarlasID = '" + vasarlasID + "'", ref error, tran);
                tran.Commit();
                tran.Dispose();

            }
            catch (Exception)
            {
                tran.Rollback();
                tran.Dispose();
                error = true;
            }
            finally
            {
                CloseConnection();
            }

        }

		public List<Vasarlas> UtolsoHonap(ref bool error)
		{
			//Az utolso honapban tortent vasarlasokat szuri ki az adatbazisbol
			try
			{
				error = false;
				List<Vasarlas> eredmeny = new List<Vasarlas>();
				string err = "";
				DateTime t = DateTime.Now;
				string nap = t.Day.ToString();
				string honap = t.Month.ToString();
				string ev = t.Year.ToString();

				if (honap == "1")
				{
					honap = "12";
					ev = (Convert.ToInt32(ev) - 1).ToString();
				}
				else
				{
					honap = (Convert.ToInt32(honap) - 1).ToString();
				}

				SqlDataReader reader = mExecuteReader("SELECT Vasarlo.Nev, Termekek.TermekNev, Vasarlo.Lakhely, Vasarlo.TelSzam, Vasarlo.SzemSzam, Vasarlas.Ar, Vasarlas.Idopont, Vasarlas.VasarlasID FROM Vasarlas, Vasarlo, Termekek WHERE Vasarlas.SzemSzam = Vasarlo.SzemSzam AND Termekek.TermekID = Vasarlas.TermekID AND Vasarlas.Idopont > '"+honap+"/"+nap+"/"+ev+"'" , ref err, null);
				Vasarlas elem;
				while (reader.Read())
				{
					elem.nev = reader["Nev"].ToString();
					elem.termek = reader["TermekNev"].ToString();
					elem.lakhely = reader["Lakhely"].ToString();
					elem.telefonszam = reader["TelSzam"].ToString();
					elem.szemelyszam = reader["SzemSzam"].ToString();
					elem.ar = reader["Ar"].ToString();
					elem.datum = reader["Idopont"].ToString();
					elem.vasarlasID = reader["VasarlasID"].ToString();

					eredmeny.Add(elem);
				}
				this.CloseConnection();
				return eredmeny;
			}
			catch (Exception)
			{
				this.CloseConnection();
				error = true;
				return null;
			}
		}
    }
}
